package types

import "time"

// ProcessDetail 进程明细数据结构
// 对应接口: GET /api/processes
// 返回该结构体的数据切片 []ProcessDetail
type ProcessDetail struct {
	// 进程基本信息
	PID         int32  `json:"pid"`          // 进程ID
	ProcessName string `json:"process_name"` // 进程名称
	Executable  string `json:"executable"`   // 可执行文件完整路径
	Username    string `json:"username"`     // 所属用户
	CommandLine string `json:"command_line"` // 命令行参数
	
	// 进程状态
	Status     string    `json:"status"`      // 进程状态: running, sleeping, zombie, etc.
	StartTime  time.Time `json:"start_time"`  // 进程启动时间
	CPUPercent float64   `json:"cpu_percent"` // CPU使用率
	MemoryRSS  uint64    `json:"memory_rss"`  // 内存使用(RSS)
	MemoryVMS  uint64    `json:"memory_vms"`  // 虚拟内存使用
	
	// 网络活动统计
	NetworkConnections int `json:"network_connections"` // 网络连接总数
	TCPConnections     int `json:"tcp_connections"`     // TCP连接数
	UDPConnections     int `json:"udp_connections"`     // UDP连接数
	ListeningPorts     int `json:"listening_ports"`     // 监听端口数
	
	// 流量统计
	TotalBytesSent   uint64  `json:"total_bytes_sent"`   // 总发送字节数
	TotalBytesRecv   uint64  `json:"total_bytes_recv"`   // 总接收字节数
	TotalPacketsSent uint64  `json:"total_packets_sent"` // 总发送包数
	TotalPacketsRecv uint64  `json:"total_packets_recv"` // 总接收包数
	CurrentSpeedUp   float64 `json:"current_speed_up"`   // 当前上传速度 (B/s)
	CurrentSpeedDown float64 `json:"current_speed_down"` // 当前下载速度 (B/s)
	
	// 连接详情
	LocalPorts  []int    `json:"local_ports"`  // 本地端口列表
	RemoteAddrs []string `json:"remote_addrs"` // 远程地址列表
	
	// 格式化字符串（前端直接使用）
	StartTimeText       string `json:"start_time_text"`       // 格式化启动时间
	MemoryRSSText       string `json:"memory_rss_text"`       // 格式化内存使用
	TotalTrafficText    string `json:"total_traffic_text"`    // 格式化总流量
	CurrentSpeedUpText  string `json:"current_speed_up_text"` // 格式化上传速度
	CurrentSpeedDownText string `json:"current_speed_down_text"` // 格式化下载速度
	
	// 时间信息
	LastUpdate    time.Time `json:"last_update"`     // 最后更新时间
	LastNetworkActivity time.Time `json:"last_network_activity"` // 最后网络活动时间
	
	// 标识字段
	HasNetworkActivity bool `json:"has_network_activity"` // 是否有网络活动
	IsSystemProcess    bool `json:"is_system_process"`    // 是否为系统进程
	IsAlive            bool `json:"is_alive"`            // 进程是否存活
}

// ProcessListResponse 进程列表响应结构
type ProcessListResponse struct {
	Processes   []ProcessDetail `json:"processes"`    // 进程明细列表
	TotalCount  int             `json:"total_count"`  // 总进程数
	ActiveCount int             `json:"active_count"` // 有网络活动的进程数
	UpdateTime  string          `json:"update_time"`  // 更新时间
}

// NewProcessDetail 创建新的进程明细实例
func NewProcessDetail(pid int32) *ProcessDetail {
	return &ProcessDetail{
		PID:        pid,
		LastUpdate: time.Now(),
	}
}